The present invention relates in general to computational systems, i.e., computer-based processing systems implemented in logic including software, hardware and/or firmware. In particular, the present invention relates to computational systems for operating on externally-defined data content or data formats (hereinafter xe2x80x9cexternally-defined dataxe2x80x9d), such as records generated in a business environment, based on client-defined rules and metadata. The invention is particularly useful in developing and operating computational systems that are readily adapted to perform various functions in different operating environments, for example, billing programs that can be adapted for different business environments.
In many cases, computing systems are required to operate on externally-defined data, e.g., business information, market information, scientific data, environmental data or other information having a content and/or format determined in relation to external or real world events. The computing systems perform operations on the externally-defined data that are as varied as the data and the environments associated with the data. These operations may depend, in part, on client-based rules, that is, rules defined by the client (e.g., party for whom the computing system was developed, or on whose behalf the computing system is operated) governing processing of the data. Accordingly, the computer systems and the algorithms implemented by the computer systems are typically developed on a case-by-case basis, and are limited to the specific application for which they were developed.
In recent years, programmers have devoted considerable effort to developing programs that are somewhat adaptable to different situations so as to reduce the need to create and reprogram source code. Some examples of such adaptable programming include configurable systems and object oriented programming (OOP). Configurable systems typically allow the user to select from various options, e.g., a menu of options, to customize the system for a given situation. The related configuration files may contain, for example, information regarding specific users, specific computers or specific programs related to the given situation. OOP generally involves programming using objects, i.e., self-contained software modules that can be used as independent building blocks. Each object includes the commands and data required to perform particular functions in response to appropriate messages from other objects or systems. Generally, new objects of a particular class inherit certain characteristics of the existing objects. These objects can be re-used or modified to address varying programming situations thereby reducing the need, in certain cases, to create software routines from scratch.
However, the degree of adaptability that is accommodated by such programming is generally somewhat limited. Configurable systems typically support only customization with respect to selected option types or from pre-programmed option fields. Similarly, objects in OOP can be used and reused as building blocks but generally only within specific operation contexts. As a result, even programmers taking advantage of the adaptability afforded by configurable systems and OOP are generally limited to writing application-specific programs. That is, at some point in such programs within the binary code, the engines that perform the various functions of the program include application-specific elements. Accordingly such engines, although perhaps providing significant adaptability, are application-specific engines and would require substantial code revision to be re-used in other applications.
The case of business software and particularly billing programs, is illustrative. These programs are designed to provide billing information for particular business environments where something is rated and billed. However, the specific business environments are as varied as the companies and industries in which they exist. The differences include, for example, industry-related factors and organization-related factors.
Among other things, industry-related factors may relate to the thing being billed and the format of available business records. By way of example, the thing being billed may be measured in minutes (e.g., of air time, on-line time, worker time spent on a project, etc.), volume or quantity of a material or commodity (cubic feet of natural gas, or kilowatt hours used, number of securities traded, etc.) or in terms of monetary units (size of transaction on which commission, royalty or service fee is due). The usage or other billing information may be provided in an industry standard or proprietary format, e.g., a call detail record or similar record of a telecommunication network. Accordingly, billing programs are generally designed on a case-by-case basis to handle particular types of data and specific data formats.
Organization-related factors relate to various billing rules that are specific to an organization or client. Examples include: billing rates that vary depending on time of day or day of the week; commission structures that vary depending on the type or size of the transaction, volume or commission sharing rules; company rules governing personal versus business expenses; internal bookkeeping rules concerning distribution of expenses and receipts as between departments or other units of an organization, etc. It is thus apparent that billing programs, in addition to addressing data types and data formats that vary from industry-to-industry (or company-to-company), must also address organization-related factors that vary from company-to-company. Similar variations are present in a wide-variety of other programming environments.
In the context of billing programs, companies generally use either an off-the-shelf billing program or have a program custom developed. Unfortunately, off-the-shelf programs generally have a limited ability to address industry-related and organization-related variations such as described above. Some of these available programs include a limited ability to customize user interface screens or billing reports, but the programs generally support only a small number of pre-defined business models corresponding to particular algorithms that are pre-coded into the programs.
Dissatisfied with the limitations of off-the-shelf programs, some companies have had billing programs custom-developed for particular applications so as to support externally-defined data according to client-defined rules. For example, a telecommunications company wishing to develop a billing program for use in billing its customers, might contract with an outside software developer. The developer would spend the time required to understand the data content and data format as received by the company. In the telecommunications industry, such data may be presented in the form of call detail records or similar records generated by a switch operator on a per call basis including, inter alia, time that the call started, time that the call terminated, the phone number called, and caller""s phone number, the MIN/ESN or other information identifying the caller to be billed. In addition, the software developer would spend time learning the company""s billing rules including different rates based on time of the day and day of the week, different rates depending on the customer""s billing plan, different rates depending on the billing zones (e.g., area codes) of the call and variable rating as a function of call duration. Based on all of this information, the developer would then design a billing program, and write specific algorithms into code that take into consideration the relevant data, data formats and billing rules. After a preliminary version of the program is written into code, the code would generally be tested, revised, debugged and otherwise developed, typically during an extensive testing period, until the company had sufficient confidence in the program to implement it in the company""s regular billing system.
The process for developing custom code on a per application basis is expensive, disruptive to the company""s business, and unreliable. In particular, the developer must devote a large amount of time, at the company""s expense, to learning the company""s business, writing code starting from basic principles, and developing the code into a functioning product. Significant company resources are often devoted to educating the developers, providing test data, analyzing the test results and troubleshooting the program. In addition, due to the complexity of developing custom code from basic principles, the resulting programs are prone to errors or inadequate performance and may take significant time to develop into satisfactory products. Because billing programs are close to the heart of a company""s profitability and its relationship with its customers, this is a matter of serious concern to companies. Nonetheless, this development process has been thought an inherent difficulty of obtaining a computing system having the ability to fully address the needs of a specific operating environment and provide the level of service that some companies or individuals demand.
It has been recognized that, in a variety of settings, there is a need for reliable and readily developed computing systems that support externally-defined data and/or that support data handling according to client-defined rules. The present invention is based in part on an understanding that many operating environments involving externally-defined data and/or client-defined rules and metadata can be addressed by computing systems including: 1) a generalized functional platform having functional elements or xe2x80x9cenginesxe2x80x9d that perform functions of given types on generic computational units independent of the specific application involved, in combination with 2) application-specific modules that receive externally-defined data and/or client-defined rules, operate the engines based on these application-specific inputs, and output computed data having an application-specific content or format. In this manner development time frames are substantially contracted with corresponding cost reductions, and system reliability is greatly enhanced, due to the ability to re-use the generalized platform.
It will be appreciated that the invention encompasses an adaptability that is qualitatively and quantitatively different than conventional techniques/systems such as OOP and configurable systems. In particular, the computing system of the present invention includes functional engines that work independent of any application-specific elements. Accordingly, these engines can be transferred from one application to another without reprogramming any such application dependent elements. Similarly, the application-specific modules interact with the functional engines in a manner that is different from conventional messaging-related interaction. For example, whereas messaging has conventionally been used to effectively call a pre-programmed function of a particular type that may be used multiple times in a particular application, or may be used to create new records that inherit certain attributes of other records based on the particulars of an application, the application-specific modules of the present invention interact with the engines in a manner that determines what type of application the engines operate within. That is, the application-specific modules xe2x80x9ctellxe2x80x9d the engines what kind of application to become. In one case, certain application-specific modules may cause the engines to function as part of a billing system for a cellular communications network. In another case, other application-specific modules may cause the same engines to function as a crude oil pricing application. This transformation of functionality can be based on both externally-defined data and client-defined rules.
In accordance with one aspect of the present invention, an apparatus may include: a processing unit for performing computation-based functions on generic data units independent of the particular data processing application; an input device for receiving an application-specific input relative to the particular data processing application; a memory, accessible by the processing unit, for storing the application specific input such that the processing unit can perform the computation based functions on the generic data units based on the application-specific input so as to generate computed data; and an output device associated with the processing unit for providing an application-specific output based on the computed data.
The processing unit may be Incorporated in a network service which implements algorithms corresponding to the computation based functions of the generalized platform. The input device may include a graphical user interface device for accessing a store of data (e.g., a look up table) relating externally-defined metadata to the generic data units and/or client-defined rules for use by processing a unit. The memory includes a computer memory configured to store the application-specific input for use by the processing unit. The output device may include one or more of a GUI""s or other processing devices which relate the computed data to an application-specific output.
In another aspect of the invention the system may be arranged in a multitier structure. A multitier structure may provide the functionality to perform more application specific processes at the tiers closest to the users, while increasingly abstract functions are performed at a central location near the base. Located at the base may be a central server which includes a database. The base server may be connected to at least one application server located at an intermediate tier. The application server may perform functions relevant to the location it is serving, while the central server may provide services for all parts of the system.
The uppermost tier may include client nodes which act as the interfaces between the system and the system users. Through the client node, system users may enter application specific data, such as rules data and definitions, and receive outputs related to the processes performed therein.
As part of the multi-tier system, a data synchronization scheme may be employed which includes the functionality to store subsets of information which have a high probability for use at a tier closer to the client node. Rules are provided which are either predetermined or adaptive in nature which identify information which may be of high demand during a particular encounter, and back fills this information from the base tier to the intermediate tier during the encounter.
In yet another aspect of the invention, the invention described herein may be implemented as an object oriented system which employs various objects which process data at different levels of abstraction between the client node and the base tier. Presentation objects in the uppermost tier may correspond to one or more business objects that are highly specific to a client""s implementation. These objects may be focused toward supporting user interfaces, report writers, etc. Mapping may be provided between the presentation objects and business objects located on an intermediate tier. The business objects may contain key abstracted business logic supported by the particular implementation of the system. Contained within these objects may be the metadata and rules necessary to drive the processing engines.
Mapping may further be included between the business objects and domain objects located on the base tier. The domain objects may correspond closely to a data model entity or an entity obtained through an external source. The domain objects facilitate the location of data required by the presentation and business objects in a database.
In another aspect of the invention, the apparatus performs various billing and customer service related functions. Under direction from the application specific modules, the functional engines use the customer defined rules to perform a variety of functions. These function may include a number of processes related to customer summary information, commitment management, translation, billing and rating, recurrent charges, revenue management, output management, and billing summary.
In another aspect of the invention, a method is provided for enabling a generalized processing platform to be used for supporting particular processing applications. The method involves providing, as part of a computing program for supporting a particular data processing application, a generalized platform for performing computational-based functions on generic data units. The generic data units are expressed in terms independent of the particular data processing application. For example, in the case of a business application for billing and customer service, the generalized platform may include functional components for performing rating and billing functions. The generic units may be defined as dimensionless parameters such as rating parameters and customer usage parameters, which do not depend on the nature of the thing being billed, e.g., whether it is defined in a business environment in terms of time, volume, kilobytes per second, etc.
The method further involves receiving an application-specific input relative to the particular data processing application, operating the generalized platform based on the application-specific input to generate computed data, and providing an application-specific output based on the computed data. The received application-specific input includes at least one of externally-defined data (e.g., billing records provided in an industry standard or company format) and client-defined rules (e.g., billing rate information). The application-specific output includes at least one of a data content and a data format that is specific to the particular data processing application. For example, the output may include billing information expressed in terms appropriate to the billing application in an organization""s billing format. The output may be provided in the form of a transmitted data signal, a printed billing statement or an electronically transmitted billing statement.
According to another aspect of the present invention, a method is provided for processing externally-defined billing and customer service related data for use by a generalized processing platform. The method includes the steps of providing a generalized processing platform for performing billing related functions on generic units, receiving externally-defined customer usage data relative to a particular billing application, and translating the externally-defined customer usage data into generic units for use by the generalized processing platform. The externally-defined customer usage data includes an externally-defined data content (e.g., in units of the thing being billed) and/or an externally-defined data format (an industry standard or proprietary format). The method allows such externally-defined information to be used by a generalized processing platform that is not specifically adapted for or limited to the particular billing application.